-
Couldn't load subscription status.
- Fork 25
Postgres Compact Fix #217
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Postgres Compact Fix #217
Conversation
🦋 Changeset detectedLatest commit: 801ea77 The changes in this PR will be included in the next version bump. This PR includes changesets to release 9 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Happy with the fix
Overview
A bug was recently identified in the Postgres compacting logic. Compacting can fail due to an "unexpected PUT operation" error.
The Postgres compacting operations logic contained an error in the bucket operation processing logic.
The current Postgres windowing logic functions as follows:
op_id.Suppose the scenario:
bucket1andbucket2, each with 8k ops.bucket1is ops [1:8_000],bucket2is ops[8_001:16_000]`.bucket1, and 2k ops[14_001:16_000]frombucket2.op_id < 14_001. It gets the 8k ops frombucket1again. But since it was busy withbucket2, and now gets data forbucket1, it thinksbucket2is done. The compactor doesclearBucket('bucket2', 14123),even though there are more PUT operations inbucket2.The updated Postgres compactor is now better aligned with the MongoDB implementation. The bucket data operations are sorted in descending order of
bucket_nameandop_id. The last operation of the batch is now correctly used as an upper limit when querying the next batches.A unit test has been added to ensure correct compaction in the scenario above.
The compacting tests were also improved to use varying compacting options.